// class Solution {
// public:
//     string addStrings(string num1, string num2) {
//         int end1=num1.size()-1,end2=num2.size()-1;
//         string s;
//         s.reserve(num1.size()>num2.size()?num1.size():num2.size());
//         int next=0;
//         while(end1>=0||end2>=0)
//         {
//             int val1,val2;
//             if(end1>=0)
//             {
//                 val1=num1[end1--]-'0';
//             }
//             else
//             {
//                 val1=0;
//             }
//             if(end2>=0)
//             {
//                 val2=num2[end2--]-'0';
//             }
//             else
//             {
//                 val2=0;
//             }
//             int ret=(val1+val2+next)%10;
//             next=(val1+val2+next)/10;
//             s.insert(s.begin(),ret+'0');
//         }
//         if(next==1)
//          s.insert(s.begin(),'1');
//         return s;
//     }
// };
class Solution {
public:
    string addStrings(string num1, string num2) {
        int end1=num1.size()-1,end2=num2.size()-1;
        string s;
        s.reserve(num1.size()>num2.size()?num1.size():num2.size());
        int next=0;
        while(end1>=0||end2>=0)
        {
            int val1,val2;
            if(end1>=0)
            {
                val1=num1[end1--]-'0';
            }
            else
            {
                val1=0;
            }
            if(end2>=0)
            {
                val2=num2[end2--]-'0';
            }
            else
            {
                val2=0;
            }
            int ret=(val1+val2+next)%10;
            next=(val1+val2+next)/10;
           s+=(ret+'0');
        }
        if(next==1)
        s+='1';
        reverse(s.begin(),s.end());
        return s;
    }
};